9
תגובות

מחיקת קובץ

פתח zacharya ,
יש לי את הקוד הבא:

if(isset($_GET['delete']))
  {
  $file = $_GET['delete'];
  $site = 'http://ncode.bbp.co.il/';
  $folder = 'file/';
  $loc = $site.$folder;
  if (file_exists(($loc.$file)))
  {
        unlink($loc.$file);
    if(delete_file($loc , $file))
    {
    $messg = <<<html
  <script> alert ("הקובץ נמחק בהצלחה!"); </script>
html
;
    echo $messg;
    }
    else
    {
      echo $err2;
    }
  }
  else
  {
    $error = <<<html
    <script> alert ("הקובץ שאתה מנסה למחוק אינו קיים, בטוח שזה הוא קישור המחיקה?"); </script>
html
;
    echo $error;
    }
  }
  else
  {

  }


אבל מסיבה מסויימת מבחינתו הקובץ אף פעם לא קיים (file exists יוצא שלילי תמיד).

9 תשובות

avatar ענה razand ב 07 למאי 2013 #

לקובץ יש הרשאות 777?

avatar ענה intval ב 07 למאי 2013 #

$site = 'http://facebook.com/';
  $folder = 'file/';
  $loc = $site.$folder


איך אתה רואה את זה קורה?
הקוד מתחבר רגע facebook.com ומוחק משם את הקובץ index.php ?
או שאולי צריך לתת לו את הנתיב של הקובץ במחשב הנוכחי? כמו
C:\wamp/www/whatever/httpdocs


---
אין פונקציה כזו כמו delete_file.

avatar ענה zacharya ב 07 למאי 2013 #

לא הבנתי את התשובה שלך...
וראיתי את הפונקצייה הזאת בלארן בוק.

avatar ענה OrelBeY ב 07 למאי 2013 #

יש סוגים שונים של כתובות. הכתובת שאתה משתמש בה היא כתובת בפרוטוקול HTTP, היא לא קשורה למה שאתה מנסה לעשות. כשאתה אומר לשרת למחוק את הקובץ, אתה "נמצא" בתוך השרת, אתה לא פונה אליו בפרוטוקול אינטרנט, אלא כמו במחשב שלך. עכשיו תנסה לקרוא שוב את מה שהוא כתב. :-)
בקשר לפונקציה - השתמשו בה שם כי הגדירו אותה שם. אתה לא יכול לגשת אליה סתם כך. מפענח ה-PHP שלך לא מודע לזה שבאתר אחר איפשהו שם יש מדריך עליו (יש סיכוי שהוא יהיה די מוחמא, האמת), ושבמדריך הזה הגדירו פונקציה והשתמשו בה. :-)

avatar ענה zacharya ב 07 למאי 2013 #

אז איך אני מגדיר את המחיקה כאילו היא במחשב שלי?

avatar ענה OrelBeY ב 07 למאי 2013 #

אתה יכול להשתמש בנתיב יחסי. כלומר, אם אתה (הסקריפט שלך) נמצא ב:

C:\wamp\www\index.php

ואתה רוצה למחוק קובץ בשם blablabla.php שנמצא בתת-תיקייה (abc) של התיקייה שבתוכה index.php, תכתוב:
abc\blablabla.php


או שתשתמש בנתיב מוחלט. שים לב שאם אתה משתמש במאפיינים סופר-גלובליים (כולל $_SERVER), אתה צריך לסנן את הנתונים קודם.

avatar ענה zacharya ב 07 למאי 2013 #

לא הבנתי כל כך, החלק של הסקריפט הוא על השרת, אז אין לי מושג מה המיקום שלו.
החלק עם הנתיב מוחלט, תוכל להראות קוד לדוגמה?

avatar ענה OrelBeY ב 07 למאי 2013 #

אתה מארגן שם את התיקיות ואת הקבצים, יש לך מושג מדויק איפה הקובץ שאתה רוצה (בנתיב יחסי).
בנתיב מוחלט - אתה רק צריך להגיע לתיקיית השורש של ה"אתר" עצמו. ואת זה אתה יכול להשיג בקלות. תגגל קצת, ותמצא אלפי דוגמאות קוד.

avatar ענה zacharya ב 08 למאי 2013 #

השתמשתי במשתנה $_SERVER["DOCUMENT_ROOT"]